热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

主体|发生_C++基础入门丨6.函数——定义调用和声明

篇首语:本文由编程笔记#小编为大家整理,主要介绍了C++基础入门丨6.函数——定义调用和声明相关的知识,希望对你有一定的参考价值。

篇首语:本文由编程笔记#小编为大家整理,主要介绍了C++基础入门丨6. 函数——定义调用和声明相关的知识,希望对你有一定的参考价值。




操作系统:Windows 10
IDE:Visual Studio 2019



文章目录


    • 1 函数的定义
    • 2 函数的调用
    • 3 值传递
    • 4 函数的常见样式
    • 5 函数的声明
    • 6 函数的分文件编写




函数是一组一起执行一个任务的语句。每个 C++ 程序都至少有一个函数,即主函数 main() ,所有简单的程序都可以定义其他额外的函数。


函数声明告诉编译器函数的名称、返回类型和参数。函数定义提供了函数的实际主体。


C++ 标准库提供了大量的程序可以调用的内置函数。例如,函数 strcat() 用来连接两个字符串,函数 memcpy() 用来复制内存到另一个位置。


函数还有很多叫法,比如方法、子例程或程序,等等。


——https://www.runoob.com/cplusplus/c+±functions.html



1 函数的定义

函数的定义一般主要有5个步骤:

1、返回值类型

2、函数名

3、参数表列

4、函数体语句

5、return 表达式

语法:

返回值类型 函数名 (参数列表)

函数体语句
return表达式


  • 返回值类型 :一个函数可以返回一个值。在函数定义中
  • 函数名:给函数起个名称
  • 参数列表:使用该函数时,传入的数据
  • 函数体语句:花括号内的代码,函数内需要执行的语句
  • return表达式: 和返回值类型挂钩,函数执行完后,返回相应的数据

2 函数的调用

函数的调用即:使用我们定义好的函数。

语法: 函数名(参数)

#include<iostream>
using namespace std;
//函数定义
int add(int num1, int num2) //定义中的num1,num2称为形式参数&#xff0c;简称形参

int sum &#61; num1 &#43; num2;
return sum;

int main()
int a &#61; 1;
int b &#61; 1;
//调用add函数
int sum &#61; add(a, b);//调用时的a&#xff0c;b称为实际参数&#xff0c;简称实
cout << "sum &#61; " << sum << endl;
system("pause");
return 0;


  • 注意实参形参的区别。

3 值传递

函数的值传递也就是在函数调用时&#xff0c;实参将值传递给形参。

值传递时&#xff0c;如果形参发生&#xff0c;并不会影响实参。

#include
using namespace std;
void swap(int num1, int num2)

int temp &#61; num1;
num1 &#61; num2;
num2 &#61; temp;
cout << "交换后&#xff1a;" << endl;
cout << "num1 &#61; " << num1 << endl;
cout << "num2 &#61; " << num2 << endl;
//return ; 当函数声明时候&#xff0c;不需要返回值&#xff0c;可以不写return

int main()
int a &#61; 10;
int b &#61; 20;
swap(a, b);
cout << "main中的 a &#61; " << a << endl;
cout << "main中的 b &#61; " << b << endl;
system("pause");
return 0;


  • 形参的值发生交换&#xff0c;不影响实参的值。

4 函数的常见样式

4中常见的函数样式


样式代码示例
无参无返void test01()
有参无返void test02(int a)
无参有返int test03()
有参有返int test04(int a, int b)

5 函数的声明

函数声明会告诉编译器函数名称及如何调用函数。函数的实际主体可以单独定义。


  • 当在一个源文件中定义函数且在另一个文件中调用函数时&#xff0c;函数声明是必需的。在这种情况下&#xff0c;应该在调用函数的文件顶部声明函数。
  • 函数的声明可以多次&#xff0c;但是函数的定义只能有一次

函数声明&#xff1a;int max(int num1, int num2);



函数声明和函数定义的区别。



6 函数的分文件编写

函数的分文件编写主要作用是&#xff1a;让代码结构更加清晰。

函数分文件编写一般有4个步骤


  1. 创建后缀名为**.h**的头文件
  2. 创建后缀名为**.c&#43;&#43;**的源文件
  3. 在头文件中写函数的声明
  4. 在源文件中写函数的定义

示例&#xff1a;

//swap.h文件
#include
using namespace std;
//实现两个数字交换的函数声明
void swap(int a, int b);

//swap.c&#43;&#43;文件
#include "swap.h"
void swap(int a, int b)

int temp &#61; a;
a &#61; b;
b &#61; temp;
cout << "a &#61; " << a << endl;
cout << "b &#61; " << b << endl;

//main函数文件
#include "swap.h"
int main()

int a &#61; 100;
int b &#61; 200;
swap(a, b);
system("pause");
return 0;

—— END ——



Reference


  • [1]&#xff1a;https://www.bilibili.com/video/BV1VJ411M7WR


如果以上内容有任何错误或者不准确的地方&#xff0c;欢迎在下面 &#x1f447; 留言。或者你有更好的想法&#xff0c;欢迎一起交流学习~~~

更多精彩内容请前往 AXYZdong的博客


推荐阅读
  • 深入理解Java SE 8新特性:Lambda表达式与函数式编程
    本文作为‘Java SE 8新特性概览’系列的一部分,将详细探讨Lambda表达式。通过多种示例,我们将展示Lambda表达式的不同应用场景,并解释编译器如何处理这些表达式。 ... [详细]
  • 二维码的实现与应用
    本文介绍了二维码的基本概念、分类及其优缺点,并详细描述了如何使用Java编程语言结合第三方库(如ZXing和qrcode.jar)来实现二维码的生成与解析。 ... [详细]
  • 问题描述现在,不管开发一个多大的系统(至少我现在的部门是这样的),都会带一个日志功能;在实际开发过程中 ... [详细]
  • 本文详细介绍了JQuery Mobile框架中特有的事件和方法,帮助开发者更好地理解和应用这些特性,提升移动Web开发的效率。 ... [详细]
  • OBS Studio自动化实践:利用脚本批量生成录制场景
    本文探讨了如何利用OBS Studio进行高效录屏,并通过脚本实现场景的自动生成。适合对自动化办公感兴趣的读者。 ... [详细]
  • 问题场景用Java进行web开发过程当中,当遇到很多很多个字段的实体时,最苦恼的莫过于编辑字段的查看和修改界面,发现2个页面存在很多重复信息,能不能写一遍?有没有轮子用都不如自己造。解决方式笔者根据自 ... [详细]
  • 如何在PHP中安装Xdebug扩展
    本文介绍了如何从PECL下载并编译安装Xdebug扩展,以及如何配置PHP和PHPStorm以启用调试功能。 ... [详细]
  • c#  项目文件,C#viual studio使用方法
    一、项目文件1)Properties节点下主要存放的是当前程序集相关的信息,如版本号、标题等。双击”Properties“,打开如下项目属 ... [详细]
  • 使用 Jupyter Notebook 实现 Markdown 编写与代码运行
    Jupyter Notebook 是一个开源的基于网页的应用程序,允许用户在同一文档中编写 Markdown 文本和运行多种编程语言的代码,并实时查看运行结果。 ... [详细]
  • vue引入echarts地图的四种方式
    一、vue中引入echart1、安装echarts:npminstallecharts--save2、在main.js文件中引入echarts实例:  Vue.prototype.$echartsecharts3、在需要用到echart图形的vue文件中引入:   importechartsfrom&amp;quot;echarts&amp;quot;;4、如果用到map(地图),还 ... [详细]
  • 本文介绍了如何利用jQuery实现对网页上多个div元素的显示与隐藏控制,包括基本的toggle方法及更复杂的显示隐藏逻辑。 ... [详细]
  • 如何在Django框架中实现对象关系映射(ORM)
    本文介绍了Django框架中对象关系映射(ORM)的实现方式,通过ORM,开发者可以通过定义模型类来间接操作数据库表,从而简化数据库操作流程,提高开发效率。 ... [详细]
  • PyCharm 安装与首个 Python 程序实践
    本文将指导您如何安装 PyCharm,并通过创建一个简单的 'Hello, World' 程序来初步体验这一强大的 Python 集成开发环境。 ... [详细]
  • WPF项目学习.一
    WPF项目搭建版权声明:本文为博主初学经验,未经博主允许不得转载。一、前言记录在学习与制作WPF过程中遇到的解决方案。使用MVVM的优点是数据和视图分离,双向绑定,低耦合,可重用行 ... [详细]
  • 如何配置VisualSVN以确保提交时必须填写日志信息
    在软件开发团队中,成员们有时会忘记在提交代码时添加必要的备注信息。为了规范这一流程,可以通过配置VisualSVN来强制要求团队成员在提交文件时填写日志信息。本文将详细介绍如何设置这一功能。 ... [详细]
author-avatar
QX封面精选
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有